23

» WarCraft 3 / Элементарное!

Принятый ответ
Похожие вопросы:

ответ
BaHeK:
Darknessay, я имел ввиду изначальное расстояние между объектами.
Вот нарисовал схематично.
Обозначим расстояние которое прошёл 1 юнит за х. Красная линия это путь который прошел юнит 2 до встречи. Двигались они одинаковое время, значит составим равенство(s1 и s2 это скорости) и немного преобразуем.
sqrt(a^2 + (b-x)^2)/s1 = x/s2
s1^2(a^2 + b^2)x^2 + 2*s1^2*b*x - s1^2(a^2 + b^2) = 0
Решаем полученное уравнение и получаем
x1 = (-2*s1^2*b + sqrt((2*s1^2*b)^2 + 4*(s2^2 - s1^2)*s1^2(a^2 + b^2))) / (2*s1^2(a^2 + b^2))
x2 = (-2*s1^2*b - sqrt((2*s1^2*b)^2 + 4*(s2^2 - s1^2)*s1^2(a^2 + b^2))) / (2*s1^2(a^2 + b^2))
Искомый угол равен arctg((b-x)/a).
Вод мою систему такой расчет не подойдет.
GF RaiseD:
Это не в одну строку посчитать
function getTargetOffset takes unit Caster, unit Target, real targetSpeed, real missileSpeed returns real

local real x1 = GetUnitX(Caster)
local real x2 = GetUnitX(Target)
local real x3

local real X4 //Координата X точки пересечения

local real y1 = GetUnitY(Caster)
local real y2 = GetUnitY(Target)
local real y3

local realY4 //Координата Y точки пересечения

local real targetSpeed
local real missileSpeed

local real distancex1x2 = Sqrt(Pow(x2-x1,2)+Pow(y2-y1,2))
local real distancex1x3
local real distanceX4Y4

set x3 = GetUnitX(Target)+targetSpeed*distaancex1x2/missileSpeed*Cos(GetUnitFacing(Target))*bj_DEGSTORAD
set y3 = GetUnitY(Target)+targetSpeed*distaancex1x2/missileSpeed*Sin(GetUnitFacing(Target))*bj_DEGSTORAD

set distaancex1x3 = Sqrt(Pow(x3-x1,2)+Pow(y3-y1,2))

set X4 = GetUnitX(Target)+targetSpeed*distancex1x2/missileSpeed*distancex1x3/distancex1x2*Cos(GetUnitFacing(Target))*bj_DEGSTORAD

set Y4 = GetUnitY(Target)+targetSpeed*distancex1x2/missileSpeed*distancex1x3/distancex1x2*Sin(GetUnitFacing(Target))*bj_DEGSTORAD

set Caster = null
set Target = null

set distanceX4Y4 = Sqrt(Pow(X4-x2,2)+PowY4-y2,2)) // Опережение (по отношению к повороту юнита-цели)

return distanceX4Y4

endfunction

Если что - я не проверял. Но должно бы работать.
Если тебе нужен угол с точки x2 на точку x3, определяется он так:
Atan2(y3-y2,x3-x2)*bj_RADTODEG
Убрал синтаксические ошибки, немного "допилил" - не хочет работать.
Всем привет работяги, я сам справился. Проверил: всё работает.
//===============Вспомогательные_функции================
function GetAngleXY takes real x, real y, real xx, real yy returns real
    return bj_RADTODEG * Atan2(yy - y, xx - x)
endfunction

function GetDisXY takes real x, real y, real xx, real yy returns real
    return SquareRoot((xx-x) * (xx-x) + (yy-y) * (yy-y))
endfunction

function GetPolarX takes real x, real f, real d returns real
return x + Cos(f*0.0174)*d
endfunction

function GetPolarY takes real y, real f, real d returns real
return y + Sin(f*0.0174)*d
endfunction

//=======================Основная часть=======================
function GetTargetOffset takes unit host, unit target, real speedm returns real
local real speedt = GetUnitMoveSpeed(target)
local real x = GetUnitX(host)
local real y = GetUnitY(host)
local real xx = GetUnitX(target)
local real yy = GetUnitY(target)
local real fac = GetUnitFacing(target)
local real dis = GetDisXY(x,y,xx,yy)
local real time = dis/speedm
local real dispost = GetDisXY(xx,yy,GetPolarX(xx,fac,time*speedt),GetPolarY(yy,fac,time*speedt))
local real X = GetPolarX(xx,fac,dispost) //нужные координаты цели
local real Y = GetPolarY(yy,fac,dispost)
    return GetAngleXY(x,y,X,Y)//возвращает угол который нужен для корректировки стрельбы
endfunction
ответ
баф у ауры убрать нельзя
ибо именно баф даёт все бонусы ауры
для теста можешь триггерно удалять ауру и баф с юнита
бонус от ауры тут же исчезнет
а если не удалять баф то он повесит пару секунд давая бонус
лучше всего это видно на доспехах веры
так что пиши свою ауру
на основе таймера с периодом в 1 секунду и перебором всех юнитов на расстоянии R от владельца ауры и добавлении им бонусов
а так же удалением бонусов у отошедших юнитов
ответ
unsinkable78, один из вариантов это большое количество однотипных триггеров с периодом
объедении их в 1
а лучше используй таймер вместо триггеров
unsinkable78, так же вероятно проблема в твоих массивах
ты судя по всему задаёшь им размер в 1000
из за чего при запуске игры твой массив заполняется ненужными значениями что забивает память и может приводить к лимиту потока (в вар3 у потока/триггера есть максимальное количество операций которые он может выполнить)
вот пример из твоего j файла
set i = 0
    loop
        exitwhen (i > 1000)
        set udg_squad[i] = CreateGroup()
        set i = i + 1
    endloop
этот код циклом от 0 до 1000 создаёт группы(1000 групп соответственно) и заносит их в массив squad
это тратит более 1000 операций
и таких моментов много
так же я видел места где ты использовал массивы вместо обычных переменных что тоже увеличивает затраты ресурсов и может приводить к лимиту потока
массивы нужно использовать лишь там где без них не обойтись
ответ
DvernoiProem:
Там все включенные триггеры - относятся к системе. Остальные выключены.
Попробуй ка сохранить карту без этой функции, потом опять с нею. Я сейчас попробую оптимизировать её.
ответ
Короче: если ставить юнита, который относится к игроку, но самого игрока нет... То whosyourdaddy не будет работать на всех юнитах этого игрока.

23

» WarCraft 3 / Почему не работает предмет?

Похожие вопросы:

ответ
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду.
Кампания - это пак карт.
ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
Melissa:
О, а у меня случается такой порожняк в Дюне.
Всё, я разобрался. Там дело было в том, что герой на арене был раньше нейтральным, а потом при выборе менял владельца. А магазин никак не реагировал на это и думал, что перед ним всё ещё нейтрал. Решил проблему, перенеся выбор героев подальше от магазинов.
ответ
Halian Izverg, в джнгп есть утилита
Fly называется
если не справишься с ней то пиши бд руками
500 объектов минут за 20 легко добавишь в бд
ответ
GF RaiseD:
Frozen_Cat, тут 2 варианта:
  • нужна система отлова и дифференциации урона. Это в случае если сайленс должны при применении исключительно дамажащих спеллов.
  • нужна система детекта текущей цели юнита. В случае, когда сайленс должен получать любой юнит, применивший любое заклинание против героя.

23

» WarCraft 3 / Леденящий крик

Похожие вопросы:

ответ
Есть Рев старого Рексара (геройский спэлл), там урон в единицах, а не в процентах.
ответ
IssueImmediateOrder(caster, "howlofterror")
caster = юнит, которому ты хочешь отдать приказ
Ну или, раз ты id нашел:
IssueImmediateOrderById(caster, 852588)

23

» WarCraft 3 / Стан в неуязвимость

Похожие вопросы:

ответ
Melissa:
юнит получает урон
damage taken >= здоровье triggering unit
б.е. - set life to (1 + damage taken)
Юнит получает урон и умирает ещё до того как ты даёшь хп триггерно.
ответ
Если значение меньше 0 хоть на .01 то твой герой или б.е. будет неуязвима. Это внутренний баг игры.
Хотя в этой фишке бессмертия есть и свои плюсы. Однако будет восполнять хп от этого процента, если по воину бьют магической атакой, или же при получении им урона от заклинания, которое наносит маг. урон.
Если хотите просто уменьшать наносимый урон, то делать лучше это через триггер.
Так же можешь в сокрытой способности на основе книга заклинаний делать блок урон на основе доспехи гор... Др. вариантов много...
ответ
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
  1. чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
  2. действие проиграть звук и указываешь твою фразу
  3. выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
  1. система отлова урона
  2. морф юнита либо орбы
всё что я не описал есть в статьях
тебе нужны первые 2 раздела ("Основы" и "Триггеры и объекты")
ответ
не использовать паузу, потому что пауза + бафф = рандомная хрень (как у тебя)
ответ
Darknessay:
quq_CCCP:
что мешает юзнуть берсерк, манащит, канал, да хоть виндвалк?
Мешает то, что берсерк и виндвалк уже использованы, переключаемые абилки - хурма, а канал не моментальный.
Ты станишь юнита, какая тебе разница?
Канал пойдет с тем же успехом, юнит его кастанет в любом случае.
Переключаемые абилки работают нормально, если уметь немного искать и читать, как их юзать в качестве простых есть инфа в статьях на форуме.
Еще всякие вееры ножей, не сбивают приказ идти куда либо. Юзай его в качестве основы.

23

» WarCraft 3 / Юнит в группе

Похожие вопросы:

ответ
м, тебе надо выбирать по одному из группы?
я делал так: f - юнит gd-группа
loop
set f = FirstOfGroup(gd)
exitwhen f == null
call UnitDamageTarget(GetTriggerUnit(),f, damage, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl",f,"origin"))
call GroupRemoveUnit(gd, f)
endloop
Сначала он выбирает первого юнита группы, делает с ним действия(в моем случае дамажит + эффект кладет), удаляет из группы. И как только юниты кончатся цикл брякается.
ответ
Sargaraser, эт проблема сиденья с телефона -'фиг попадешь по нужной ссылке
А по теме поиск творит чудеса , за 3 минуты поиска нашел 10 тем с таким вопросом и в каждой есть решение
ответ
Событие каждые 1 сек времени
пауза triggering unit
^ Не имеет смысла, здесь нет triggering unit, исправляй, сообщи об изменениях или неизменениях.
У тя там чета про убийства ещё, но спрятать юнит проиграв анимацию смерти не означает его убийство и из группы он не удаляется, если состоит. Так что имей в виду.
ответ
мне мои вопросы кажуться легко решаемыми
это только кажется
реально это тот ещё геморрой
попробуй сам реализовать пункт 4 (имхо самый простой из всего)

23

» WarCraft 3 / Старая карта в варике

Похожие вопросы:

ответ
По части кода:
  1. Запускаешь в редакторе новой версии
  2. Сохраняешь
  3. Если при компиляции находятся ошибки, исправляешь их
  4. Сохраняешь снова
  5. Профит
ответ
не знаю даже поищи СТАРЕЙШИХ ИГРОКОВ У ВАРКРАФТА и попроси у них все карты которые они имеют
а дальше пороверь все карты и найди её если не найдёш значит она тебе приснилась)
ответ
Уровень = Уровню героя. Характеристики = Характеристикам героя. Цикл 6-разовый на каждый слот дающий предмет герою. Уровни способностей равные уровню способностей героя. Героя, в смысле твоего героя. Ну еще создать юнита типа твоего героя. Что-то еще? Если он где-то в переменных для пассивок, то с ними тоже по колдовать и все.
Будет только одна проблема, если ты книги атаки на его юзал то их никак не засеч без геморроя. А так все в виде целочисленных на твоем герое записано.
ответ
Увы нет, смотреть из за чего ошибка и потом смотреть что в коде могло её вызвать.
Так же нелишним будет собрать статистику а что именно происходило в этот момент и изучать код, кторый работал в этот момент.
Фаталить могут даже дефолтные способности.
ответ
Никак. Варкрафт 2 — двухмерная игра, в ней нет моделей. В ней плоские картинки — спрайты. А модели «из варика 2» моделлеры делают заново.

23

» WarCraft 3 / Warcraft 3: 1.28+

Похожие вопросы:

ответ
Откатитесь, не надо ставить это баганое обновление! Близарды совершили кучу ошибок, и там ни карты и JNGP работать не будут.

23

» WarCraft 3 / Проблема с работой библиотеки

Похожие вопросы:

ответ
Nirvana мод. Поищи информацию о нём. Там всё чудесно в этом плане вроде как реализовано.
ответ
Думал использовать чисто для экономии времени. По хорошему конечно надо самому написать системки, да все руки не доходят.
Может тогда подскажите, есть ли готовые более менее пригодные для использования. Сам всегда делал через торнадо, разве это уже не модно?
ответ
У меня всё работает, просто прописываю эти нативки в коде самой карты, вот карта, здесь и урон изменяется.
Чтобы typecast работал в JNGP нужно создать аж 3 переменных!
Какие три? Я только две использую:
integer array l__A
integer A

23

» WarCraft 3 / Убрать тень

Принятый ответ
Похожие вопросы:

ответ
Миханчик
Возможно восстановление карты, после её удаления?
После удаления - пользуйся программой для восстановления удаленных файлов, например Magic Recovery
после ввода кода в карту, он пропал. Может я просто не сохранил карту или не знаю почему...
Насколько я понял речь про архив карты. Пропасть он мог только в случаях:
  1. ты его не добавил
  2. файллист изменился после добавления
ответ
  1. Граффика тень ширина, высота, ( Shadow X\Y\H\W )
  2. Ну взять способность без авто применения или отдавать приказ останавливающий автоматическое применение (см. свойства способности)
  3. Никак, это невозможно простым путем, единственный доступный нам способ это взять за основу другую способность, с мгновенным применением.
ответ
Редактируешь файл теней (war3map.shd) напрямую через mpq-редактор и удаляешь ненужную тень.
ответ
Bornikkeny, тень можно удалять триггерно у определенного предмета. Для этого нужно перед созданием предмета добавить custom script:
call DestroyImage(null)
и после создания:
call SetImageColor(null,0,0,0,0)
ответ
Момент с порчей и миникартой оказался тем что там высота на уровне воды.
Но саму тень я все равно не могу убрать.
А все вопрос снимаю, это тень от здания

23

» WarCraft 3 / Выбран юнит

Похожие вопросы:

ответ
м, тебе надо выбирать по одному из группы?
я делал так: f - юнит gd-группа
loop
set f = FirstOfGroup(gd)
exitwhen f == null
call UnitDamageTarget(GetTriggerUnit(),f, damage, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl",f,"origin"))
call GroupRemoveUnit(gd, f)
endloop
Сначала он выбирает первого юнита группы, делает с ним действия(в моем случае дамажит + эффект кладет), удаляет из группы. И как только юниты кончатся цикл брякается.
ответ
Способность предмета или нет, не важно. Если ловишь способность то и пляши дальше вокруг неё
ответ
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
ответ
заносишь все области в массивы и прогоняешь циклом.

23

» WarCraft 3 / Жанр карты

Похожие вопросы:

ответ
Ни разу не делал карты "чисто стандартного жанра". Т.е. общий жанр определить можно всегда, но нужно чтобы можно было выделить что-то, чем твоя карта реально отличается от себе подобных.
Вот, глянь чуть (щас набегут хомячки с возгласами ОЛОЛО РЕКЛАМА ДОК БЛИН КАК НЕ СТЫДНА)
ответ
Немного добавлю..
Tag (Tag Map) - Особенный жанр карт, в котором существует две команды - убегающие и догоняющие. Убегающие должны бежать от догоняющих, при этом они могут строить защитные базы, чтобы избежать поимки. Если убегающие выживут на протяжении заданного времени, то они выигрывают. Если догоняющие убивают всех убегающих до истечения времени, побеждают они. Выбывшие убегающие обычно помечаются как флаги или чёрные энты и воскрешаются, если они были атакованы или один из других убегающих достиг центра карты.
Примеры карт: Петросянщина, Вампиризм, Маньяк с пилой
Mini-Game - Жанр, включающий в себя карты обычно маленьких размеров и узконаправленные. Есть сборники мини-игр, которые включают в себя сразу несколько маленьких игрушек различного жанра. По своему устройству обычно несложные.
Примеры карт: Worm War, Death Sheep, Azeroth Grand Prix
Simulator - Не особо распространённый жанр карт, который содержит детализированное управление какой-либо аспектом карты. Его порой нетрудно спутать с RPG, но есть свои отличия.
Примеры карт: Ashenvale Archers, Fantasy Life, Jungle Trolls Reborn
Cinematic - Постановочные ролики, видео. Может даже и мини-фильмы.
Примеры карт: DDay:Judgement the Movie, matso TROY
Hero Arena - игроки выбирают по одному герою и помещаются на арену. Цель в отличие от AOS исключительно в убийстве героев вражеских игроков, а не уничтожении Базы врага.
Примеры карт: Angel arena
Сastle defense - игроки должны защищать определенное здание в течение определенного времени или количества волн монстров.
Примеры карт: X Hero Siege, Castle Fight, Lotr Lord of the Rings Castle Wars
Можно также делить общие жанры на категории: например:
  • Melee - ladder/custom;
  • Tower defense - Cooperative/ Survival/Tower wars$
ответ
Gerych, сюда тоже можно но вопрос будет закрыт через неделю с момента последнего ответа
ну а вообще для таких вещей стоит создать бложик и там в качестве ресурса подобное спрашивать
ответ
Steal nerves:
мб нужно сменить ид приказ у абилки
ответ
Eota: Exodus
оригинальный автор DarnYak
поищи его последнюю карту...
помню раньше ещё был оф. сайт... но он вроде упал...
поиграть в эту карту еще. Никто из друзей и знакомых не помнит, но не приснилась же мне эта карта!
не приснилась... хорошая карта, но толпой играть слишком легко...

P.S. а нет, сайт ещё жив, кажется

23

» WarCraft 3 / Текст при загрузке карты

Похожие вопросы:

ответ
Я ж те писал. Поле описания карты оставляешь пустым. Всё описание вставляешь в картинку загрузочного экрана
Но надо что бы был текст на загрузочном экране(который настраивается через редактор)
Больше ничего не надо, нет? Текст на картинке делается в 20 секунд. Если бы всё в этом мире делалось через фразу "не хочу"
ответ
Smart096, баг только в этой карте?
в новых картах бага нету?
если да то стоит проверить импортируемые модели и текстуры (мб часть битая)
но с вероятностью в 60% проблема в системе ибо было много жалоб на баги в вин10

23

» WarCraft 3 / Урон 0

Похожие вопросы:

ответ
У тебя событие в триггере неверное. Ты указал, что юнит атакован, а необходимо событие, что юнит получает урон.
ответ
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
ответ
Nifistofi, делая неуязвимым не на 0,01 а на 0,00
ответ
Такой функции нет, но можно наносить весь урон от заклинаний триггерно, и создать базу данных типов атаки, где хранить у какого юнита какой тип
ответ
Исправил.

23

» WarCraft 3 / Вампиризм

Принятый ответ
Похожие вопросы:

ответ
Есть, смотри маску смерти.
ответ
Делаешь предметную абилку с уровнями, создаешь абилку-пустышку. В скиллы герою даешь пустышку. Отслеживаешь изучение пустышки и в соответствии с ее уровнем апаешь "скрытый" предметный скилл.
ответ
Вообще в мемхаке есть же.
Но новички в картостроительстве, большинство серверов и отчасти последний патч варкрафта в мемхак не понимают.
ответ
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально

в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами
ответ
8gabriel8, Ну я сказал главное без наведения невидно.

23

» WarCraft 3 / Не работает триггер

Похожие вопросы:

ответ
Если юнит создается, предмет дается, значит ошибка точно не в событиях и не в условиях. В действиях нет ошибок тоже. Может быть неправильно установлена переменная "Drenney_AttackingUnit". Или проверь сам предмет. Может он не рабочий.
ответ
Сначала попробуй перенести все триги в другую карту, если в другой мапе все работает - проблема не в тригах, если всеже в тригах - удаляй по очереди, категориями, выясняй из-за каких не работает. Это проблема частного триггера\переменной. Чаще всего так.
ПЫСЫ не забывай бэкапить карту
ответ
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
ответ
quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором

23

» WarCraft 3 / Вроде просто, но я не понимаю как...

Похожие вопросы:

ответ
скрин моих файлов
у тебя похоже пропали все j файлы
закинь их в эту папку и перезапусти редактор
ответ
Steal nerves:
Проблема в том, что, если в этой точке построено здание, то IsTerrainPathable(x, y, PATHING_TYPE_BUILDABILITY) не помогает (это терраин проверяет, а вот то что там построено или нет ему пофиг). Посмотрел в триггерах, есть только текстуры земли - уберспласты (там эти текстурки для здания) - нет функции такой в библиотеке jngp для проверки точки. Пробовал через группу, но там своя заминка (походу выборка ловит тех юнитов, точки которых попали в выборку, а не на целиком. Точно не проверял, но не работает с группой),
Clamp, решил через проверку
if (IssueBuildOrderById(YT, 'hhou', x, y) == false) then если не может построить, значит там здание или что-нибудь еще.
Clamp, помог еще твоя ссылка ExecuteFunc. видимо у меня лимит был, не хотело работать (просто дебаг не отобрал. и раб стоял). Хотя это уже не нужно было
А да слегка подвисает на секунду =(
Урра короче без лагов сделал (версия 3), подредактировать недоработку и будет норм

23

» WarCraft 3 / BJ-функция

Похожие вопросы:

ответ
берёшь содержимое бж функций с сайта
и копируешь себе в блокнотик
по поводу русификации копайся в файлах джнгп
мб найдёшь где то файлик с именами
либо сноси свой вар нафиг и ставь англ верию
ответ
интережер это число
а null это объект
число не является объектом
следовательно их нельзя сравнивать/приравнивать
ответ
~16GB:
ты что делаешь новые функции для гуи? если да, то нафига?
ответ
Steal nerves:
filterGetUnitsOfTypeIdAll - фильтр, вместо него должно быть написано либо null или Condition( function XXX) Короче зачем нужен фильтр? Фильтр при выборе всех юнитов сразу отсеивает не нужных, если по условию не подходит, то выкидывает.. Вам сразу достается готовая группа с нужными юнитами
А в качестве переменных используй GetFilterUnit, GetFilterPlayer. На гуи по-другому называют MatchingUnit
где XXX - название функции, эта функция возвращает boolean (то есть истину или ложь)
вбей в поиск названии функции, может найдешь ответ
например выделяем все здания UNIT_TYPE_STRUCTURE, а те, кто не является зданием отсеиваем
function XXX takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE)
endfunction
насчет статьи не видел, это придет с пониманием. Главное начать. Сначала тупо конверт, и оптимизация. А дальше можешь сам
что у тебя там не работает скидывай сюда
ответ
Это какие-то извращения у вас там.
Bj можно раскрыть и увидеть, что там происходит присваивание нового юнита глобалке bj_lastCreatedUnit.
Нужно сразу присваивать локалке нового юнита и не использовать эти ваши bj_lastCreatedUnit:
local unit u
u = CreateUnitAtLoc (GetTriggerPlayer(), 'hfoo', location, bj_UNIT_FACING)

23

» WarCraft 3 / Триггер получения предмета

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
Спеллбук, запрет заклинания.
ответ
Gerhop, если у игрока лишь 1 герой то можно сразу дать этот скилл
при подборе предмета разрешать его а при выпадении запрещать
тогда вроде кд будет сохранятся
если мне память не изменяет

23

» WarCraft 3 / Герой не морфается

Похожие вопросы:

ответ
Потому что у модели для этих состояний предусмотрена именно такая анимация, это свойство модели и кроме как заставить триггерно юнита проигрывать нужную анимацию или переделывать модель путей нету.
ответ
quq_CCCP:
Darknessay:
Ничего не понятно, но если не работает пеший в пешего, почему не пеший>летающий>пеший - использовать посредника?
Ващето пеший в пешего работает но не так, альт форма дамми юнит, нормальная форма тот в кого хотим превратится, основа перевоплощение, все параметры в 0.
Я думаю, тебе стоит переписать свою темку на другом языке, ибо не отвечают потому что не понимают.
ответ
Custom, Никак, HeroAbilityList низя править во время игры, делайте несколько героев с разными наборами скиллов на изучение, а потом морфите.
Как правильно морфить можно найти инфу тут.
Перед морфом желательно убирать все предметы из инвентаря.
ответ
Делай call UnitMakeAbilityPermanent(u, true,'A000') ) .
Где вместо A000 твоя абилка.
Если абила спеллбучная, то все спеллбуки тоже надо вживлять.
Перманент-абилы не пропадают после морфа и анморфа. Просто добавленные - пропадают.
ответ
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально

в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами

23

» WarCraft 3 / Менять тип атаки

Похожие вопросы:

ответ
это морф, детка :D
ответ
убери галку с "не сам воин". Там же всё довольно хитрожопо, лучше лишние пункты не помечать.
"Враги, наземные"
ответ
У каждого типа атаки должны быть свои допустимые цели, без пересечений.
ответ
извиняюсь за беспокойство нашел более лучшее решение проблемы
ответ
VovkaShyt, будет, хоть 10 хоть 0,01 будет снижаться количеством брони, а эти параметры - снижение от типа брони, сила тьмы игнорирует тип брони, а вот атака героя не игнорирует тип защиты зданий, здания, вспомните как долго в мили картах ломаются здания.

23

» WarCraft 3 / Как определить атаку и защиту

Похожие вопросы:

ответ
У вайпера "Corrosive Skin" сделано на событии получения урона выше опред. порога (вроде выше 2.00).
Если охото чтобы именно дебафнуть в момент нанесения тычки, то тут нужно 2 триггера, 1 который следит (юнит атакован) и запускат таймер на скмжем 2 сек.
Второй триггер ждет что кто то (атакуемый или атакующий) сдохнет, время выйдет, атакующий отдаст приказ без указания цели, атакуемый получит урон.
Добавляя атакуемому скилл на основе рунных браслетов (-2.00 фактор резиста) и отсеиваем весь урон от заклинаний (ну наносим его юниту еще раз, но удалив браслеты и снизив хп) а если урон физический и источник урона на наз замахивался,последние 2 сек, + не успел отдать приказ без указания цели то его баффаем.
Если совсем лень, скачиваем систему отлова физического урона.

23

» WarCraft 3 / точка сбора

Похожие вопросы:

ответ
делается это через проверку на существование точки сбора
то есть
boolean IsRally(unit u){
	location a=GetUnitRallyPoint(u);
	bool b=a!=null;
	RemoveLocation(a)
	return b;	
}
ответ
UnitRemoveAbility(whichUnit, 'ARal')
где whichUnit - твое здание
ответ
Нужно делать регионы подальше от мест строительства, смотри замок скиби.
Так же сделай крипам атаку которая ваншотит здания, если крипы не смогут пройти, они будут автоатковать ближайшие здания, таким образом тот кто застроит проход - навредит сам себе.

23

» WarCraft 3 / способности

Похожие вопросы:

ответ
Когда юнит проучивает пассивку, добавляй в группу юнита, который выучил пассивку. Дальше все просто -
Юнит умирает
Киллинг юнит в нашей группе - да
Дайинг юнит не в команде владельца киллинг юнит.
Игрок - адд проперти - 500 золото (овнер оф киллинг юнит)
ответ
Попробуй событие - входит в регион, ну и проверь что юн ит мертв.
Дефолтные способности сложно отслеживать, многие используют для работы свои методы, как к примеру руны или орбы - они хоть и кастуют спелл нл события каста нету, как и проверки приказа, кулдауна и прочего.
ответ
RotceV,
юнит приобретает способность
приобретённая способность == Абилка А
modify hero skills point trggering unit substract 1 point
ответ
8gabriel8, нет. Тебе нужен жар преисподней или любая абилка, которая позволяет отловить приказ включени/выключения. При приказе включения добавляешь герою ауру замедления (ну для дамага жар преисподней сойдет с увеличенным радиусом, а если нет- сделай таймерный дамаг). При выключении убираешь ауру замедления и отключаешь таймерный дамаг. Все просто